As used herein, the term "erroneously programmed" must be understood in the general sense, namely as the erroneous programming of a memory cell of a subblock, which causes the corresponding memory cells in a subgroup of subblocks to be erroneously programmed.
Semiconductor memories can in general be divided in table memories and function memories. The present invention concerns table memories in particular, which have a plurality of memory cells, each memory cell being assigned a certain address. Table memories may be of the read-write (RAM) or read-only (ROM) type.
EPROMs and EEPROMs are special types of ROMs, which can not only be programmed by the user, but can also be erased; EPROM memory cell blocks can be erased using ultraviolet light and selected EEPROM memory cells can be erased (e.g., by byte) with an electric voltage pulse.
Flash memories (also known as flash EEPROMs or flash RAMs) represent something in between EPROMs and EEPROMs. They can be electrically erased, not by byte-like EEPROMs, but by block-like EPROMs. However, more recent developments have allowed these erasable flash EEPROM blocks to become smaller and smaller.
Flash memories can be manufactured less expensively than EEPROMs and have a higher data density. Therefore they are particularly sought after in applications where there is little space available, e.g., in laptops, notebooks or high-performance microcontroller chips.
To make better use of the chip surface, the flash memory array is usually divided into blocks and block subgroups, known as pages.
The underlying problem to be solved by the present invention is, in general, that when parts of the flash memory are erased and programmed, errors may occur, which may result in data losses or erroneous programming in other areas of the flash memory (collective error propagation). In the case of some errors, such as overprogramming, it is difficult to detect and correct the error.
Overprogramming is elucidated with reference to a concrete example of a microcontroller.
A non-volatile memory chip in the form of a flash memory array is implemented in this microcontroller. This flash memory array is divided into 32-kB erasable blocks, and the blocks are in turn divided into 8-word-long pages (1 word=32 bits).
Thus, stored data can only be erased in the 32-kB blocks, while programming can be done in the 8-word pages.
If a memory cell (1 bit) of a page goes from a non-programmed (erased) to a programmed state, the characteristics of the memory cells, or more precisely of the respective field-effect transistors, cause this cell to reach a state that is referred to as overprogrammed. This overprogrammed state is distinguished by the fact that the cell constantly sheds its stored information outward even without additional activation of the memory cell when the respective page is read.
Due to the special structure of the flash memory array, overprogrammed memory cells also interfere with reading of the other pages. This causes data stored on the other pages to be corrupted and possibly erroneously output.
An overprogrammed memory cell can be returned to the erased state by erasing the entire 32-kB block containing the overprogrammed memory cell.
Which pages are affected by an overprogrammed memory cell depends on the structure of the memory array. Often not all the other pages are affected, but only the memory cells of the pages located in the same column of the memory array. The error then occurs at a periodic distance from the page with the overprogrammed cell in the flash memory array.
Without being familiar with the history of the flash memory array, it is not possible to detect such overprogrammed cells.